Skip to content

chore+docs: tidy the repo layout and split the README - #40

Open
JOhnsonKC201 wants to merge 2 commits into
mainfrom
chore/repo-structure-and-readme
Open

chore+docs: tidy the repo layout and split the README#40
JOhnsonKC201 wants to merge 2 commits into
mainfrom
chore/repo-structure-and-readme

Conversation

@JOhnsonKC201

Copy link
Copy Markdown
Owner

Two passes over how the project reads on GitHub. No app behaviour changes: lint clean, 214 tests green, boot check green.

The layout

Before After Why
extras/lobby-jam.html tools/lobby-jam/index.html + README A one-file top-level directory. It is the same kind of thing as tools/ipad-terminal/: run it yourself, not part of the app.
scripts/make-app-icon.js, make-tray-icon.js, make-ico.js, logo-glyph.js removed They referenced only each other. make-logo-icons.js (npm run icon) has produced every icon since the logo rework, and make-ico.js was not wired to anything.
assets/pixelcat-demo.{gif,mp4}, assets/pixelcat.ico removed Rebrand leftovers, 588K, embedded by no page and used by no build. The generator survives and now writes pixelpets-demo.*.
scripts/ (15 entry points, no map) scripts/README.md Groups them, and marks the two that are public surface.

npm run demo:all no longer runs the legacy demo recipe, so it now does what the README always said it did: hero, gallery, carousel.

Deliberately not moved. agent-hook.js, scripts/notify.js and launch-pixelpets.vbs are all pasted into other people's hook configs, CI jobs and desktop shortcuts, so tidying them would break real installs. CONTRIBUTING.md / SECURITY.md / CODE_OF_CONDUCT.md stay in the root too: published release notes link blob/main/SECURITY.md, and GitHub does not redirect moved files. Both are now written down in docs/architecture.md so the next tidy does not have to rediscover them.

The README

693 lines and 38K, with nine <details> blocks, which is the page admitting most of itself is not for a first-time reader. It keeps the hero, gallery, what it does, quick start, controls, agent hooks and privacy, and hands the reference material to docs/:

  • docs/features.md every interaction, coat, mood, sound and productivity feature, as prose instead of collapsed sections
  • docs/architecture.md how one sprite covers 15 coats, the project layout, and the paths that cannot move
  • docs/development.md commands, installer builds, visual QA, and the macOS beta checklist (now with a real anchor to link testers at)
  • docs/custom-coats.md designing, hand-editing and sharing a coat
  • docs/README.md an index, since docs/ held one file and a folder of art

693 -> 285 lines, nothing dropped.

Staleness fixed on the way through

  • CONTRIBUTING.md pointed at README.md#development, at npx eslint src/ tests/ rather than the npm run lint CI runs, and at npm run sheet where the headless npm run poses:cat is what the pose tests drive.
  • docs/frame-pack.md still claimed 28 coats.
  • Two cat-sprite.js header comments pointed a reader at the deleted make-app-icon.js.

One test changed

tests/bridge-paths.test.js asserted the README quotes the real %TEMP% bridge filenames, and moving the notify docs made it fail. That is the test working. Rather than pin the prose in place, it now asserts over the whole user-facing doc set, so a path can live on whichever page suits it but still cannot go undocumented, and it additionally fails a page that quotes a %TEMP% bridge file nothing reads.

Verification

  • npm run lint clean
  • npm test 214 pass, 0 fail
  • npm run test:boot renders a frame
  • Every relative link and every heading anchor across the README and all seven docs resolves

Four things the folder had accumulated, none of which a newcomer could tell
apart from live code by looking:

- `scripts/make-app-icon.js`, `make-tray-icon.js`, `make-ico.js` and
  `logo-glyph.js` referenced only each other. `make-logo-icons.js` (`npm run
  icon`) has produced every app and tray icon from `assets/logo.png` since the
  logo rework, and `make-ico.js` was not wired to anything at all. Removed, and
  the two `cat-sprite.js` header comments that pointed a reader at
  `make-app-icon.js` now point at `pet-sheet.js`, which is a Node consumer that
  still exists.

- `assets/pixelcat-demo.{gif,mp4}` and `assets/pixelcat.ico` survived the
  rebrand carrying the old name. Nothing embeds them: the README uses the hero,
  gallery and carousel, and the build takes `icon.ico`. That is 588K of binary
  in every clone for no reader. The demo recipe that writes the pair keeps
  working but now writes `pixelpets-demo.*`, and it is out of `demo:all`, which
  the README describes as regenerating the README media and which it was not.

- `extras/` held one file. Lobby Jam standalone is the same kind of thing as the
  iPad terminal (run it yourself, it is not part of the app), so it moves to
  `tools/lobby-jam/` with a README, and a top-level directory goes away.

- `scripts/` is 15 entry points with no map. `scripts/README.md` groups them and,
  more usefully, marks the two that are public surface: `notify.js` and
  `install-hook.js` are pasted into other people's CI jobs and cron entries, so
  they cannot be moved on a tidying whim.
The README had grown to 693 lines and 38K, which is long enough that the two
things a landing page has to do, convince someone to try it and get them
running, were buried under reference material they had no reason to read yet.
Nine `<details>` blocks is the tell: the page already knew most of itself was
not for a first-time reader.

So it keeps the hero, the gallery, what the thing does, quick start, controls,
agent hooks and privacy, and hands the rest to `docs/`:

- `docs/features.md` every interaction, coat, mood, sound and productivity
  feature, as prose rather than collapsed sections, so it is readable in one
  pass and findable by search
- `docs/architecture.md` how one sprite covers 15 coats, plus the project
  layout, plus the paths that are public surface and cannot move
- `docs/development.md` commands, installer builds, visual QA and the macOS
  beta checklist, which now has a real anchor to link people at
- `docs/custom-coats.md` designing, hand-editing and sharing a coat
- `docs/README.md` an index, since `docs/` previously held one file and a
  folder of art and was easy to mistake for a dead end

README goes 693 -> 285 lines with nothing dropped.

Three staleness fixes found while moving the text: CONTRIBUTING pointed at
`README.md#development` and at `npx eslint src/ tests/` rather than the
`npm run lint` CI actually runs, and recommended `npm run sheet` where the
headless `npm run poses:cat` is what the pose tests drive; frame-pack.md still
claimed 28 coats.

`tests/bridge-paths.test.js` asserted the README quotes the real `%TEMP%`
bridge filenames, and moving the notify docs would have made it fail, which is
the test doing its job. Rather than pin the prose in place it now asserts over
the whole user-facing doc set, so a path may live on whichever page suits it but
still cannot go undocumented, and it additionally fails a page that quotes a
`%TEMP%` bridge file nothing reads.
@vercel

vercel Bot commented Aug 31, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pixelcat Ready Ready Preview Aug 31, 2026 3:34pm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant